namespace ScrumSprintMonitor.Infrastructure
{
	#region #using Directives

	using System;
	using System.Collections.Generic;
	using System.ComponentModel;

	using Configuration;

	#endregion

	public interface IConnection : INotifyPropertyChanged,
	                               IDisposable
	{
		bool IsConnected { get; }
		bool IsDisposed { get; }
		void Connect();
		void Disconnect();

		IBuildInfo GetBuildInfo(ISprintConfiguration configuration);
		string GetSprintName(ISprintConfiguration configuration);
		Uri GetWorkItemDisplayUri(IWorkItemAdapter workItem);
		IWorkItemStore GetWorkItemStore(ISprintConfiguration configuration);

		ICollection<string> GetProjectList();
		ICollection<string> GetBuildDefinitionList(string teamProject);
		ICollection<string> GetIterationPaths(string teamProject);
	}
}